#include "can_signal.h"
static can_rx can_rx_d;

/*
 *函数介绍: CAN信号测试函数
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void can_signal_test(void)
{
#if UNLOCK_TEST /*OBU发出车辆解锁信号*/
    st_Light_effect_now(VEHICLE_UNLOCKING);
#endif
#if LOCK_TEST /*OBU发出车辆上锁信号*/
    st_Light_effect_now(VEHICLE_LOCKING);
#endif
#if TURN_LEFT_TEST /*OBU发出车辆左转信号*/
    st_Light_effect_now(VEHICLE_TURNING_LEFT);
#endif
#if TURN_RIGHT_TEST /*OBU发出车辆右转信号*/
    st_Light_effect_now(VEHICLE_TURNING_RIGHT);
#endif
#if WARNING_TEST /*OBU发出预警信号*/
    st_Light_effect_now(VEHICLE_WARNING);
#endif
#if CHARGE_TEST /*OBU发出充电信号*/
    st_Light_effect_now(VEHICLE_CHARGING);
    charging_set_Battery(38);
#endif
    st_Brightness_control_now(BRIGHTNESS_REMAINS_UNCHANGED);
}

/*
 * 函数介绍: 返回CAN接受最新的LED灯效模式
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Light_effect rt_L_mode(void)
{
    return can_rx_d.can_rx_uno.sig.L_mode;
}

/*
 * 函数介绍: 设置RGB是否需要填装新颜色标志
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void st_Rgb_now(rx_flag fg)
{
    can_rx_d.Rgb_now_fg = fg;
}

/*
 * 函数介绍: 返回RGB是否需要填装新颜色标志
 * 参数:
 * 返回值: {*}
 * 备注:
 */
rx_flag rt_Rgb_now(void)
{
    return can_rx_d.Rgb_now_fg;
}

/*
 * 函数介绍: CAN中断装填数据函数
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void can_rx_Msg_Callback(uint8_t * byte)
{
	uint8_t i;
	for(i = 0;i<8;i++)can_rx_d.can_rx_uno.rx_data[i] = byte[i];
    can_rx_d.can_rx_fg = NEW_INS;
}

/*
 * 函数介绍: CAN信号解析主函数
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void can_signal_main(void)
{
	//can_signal_test();
#if 1
    if (NEW_INS == can_rx_d.can_rx_fg)
    {
        st_Light_effect_now(can_rx_d.can_rx_uno.sig.L_mode); /*灯光模式*/
        st_Brightness_control_now(can_rx_d.can_rx_uno.sig.B_change);/*亮度变化*/
        charging_set_Battery(can_rx_d.can_rx_uno.sig.V_battery);/*整车电量0-100*/
        can_rx_d.Rgb_now_fg = NEW_INS;/*RGB有新颜色需要处理*/
        can_rx_d.can_rx_fg = NO_INS;/*清除CAN接受指令标志*/
        Clear_structural_data();
    }else{}
    
#endif
}

